<?php

namespace JLPay\Models\Trans\Common;

use JLPay\Models\BaseRequest;

/**
 * 渠道查询请求模型
 */
class ChnQueryRequest extends BaseRequest
{
    /**
     * API URL
     */
    public const API_URL = "/open/trans/chnquery";

    /**
     * @var string|null 商户号
     */
    private ?string $mchId = null;

    /**
     * @var string|null 外部订单号
     */
    private ?string $outTradeNo = null;

    /**
     * @var string|null 平台订单号
     */
    private ?string $transactionId = null;

    /**
     * 设置商户号
     *
     * @param string $mchId 商户号
     * @return $this
     */
    public function setMchId(string $mchId): self
    {
        $this->mchId = $mchId;
        return $this;
    }

    /**
     * 获取商户号
     *
     * @return string|null 商户号
     */
    public function getMchId(): ?string
    {
        return $this->mchId;
    }

    /**
     * 设置外部订单号
     *
     * @param string $outTradeNo 外部订单号
     * @return $this
     */
    public function setOutTradeNo(string $outTradeNo): self
    {
        $this->outTradeNo = $outTradeNo;
        return $this;
    }

    /**
     * 获取外部订单号
     *
     * @return string|null 外部订单号
     */
    public function getOutTradeNo(): ?string
    {
        return $this->outTradeNo;
    }

    /**
     * 设置平台订单号
     *
     * @param string $transactionId 平台订单号
     * @return $this
     */
    public function setTransactionId(string $transactionId): self
    {
        $this->transactionId = $transactionId;
        return $this;
    }

    /**
     * 获取平台订单号
     *
     * @return string|null 平台订单号
     */
    public function getTransactionId(): ?string
    {
        return $this->transactionId;
    }

    /**
     * 转换为数组格式
     *
     * @return array 数组格式的数据
     */
    public function toArray(): array
    {
        $data = parent::toArray();
        $data = array_merge($data, [
            'mch_id' => $this->mchId,
            'out_trade_no' => $this->outTradeNo,
            'transaction_id' => $this->transactionId
        ]);

        return $data;
    }
} 